//hit-the-bricks
//coded by mattia franchetto
//jquery-ui

var tot=0;
var lvl=1;
var tm=18.5;
var timefinished;

$(function(){
	
	$("#progressbar").progressbar({value:(lvl/12)*100});

	$('.fg-button').hover(
	
		function(){ 
			$(this).addClass("ui-state-hover"); 
		},
		
		function(){ 
			$(this).removeClass("ui-state-hover"); 
	});
	
	$('#begin').click(setLevelInterval);
	
	$('#re-begin').click(restartGame);
	
	$('#pausegame').click(pauseGame);
	
	$('#resumegame').click(resumeGame);
	
	$('#hitthebricks').mouseenter(function(){
		
		be=$('<div></div>');
		
		$(be).html('Hit the bricks! &egrave; un gioco in cui devi colpire dei mattoncini per avanzare al livello successivo. I livelli vanno da 1 a 12. Ogni 3 livelli aumenta il grado di difficoltà, ovvero si rimpiccioliscono i mattoncini. Per ogni livello il tempo scende di 0.5 secondi e i mattoni aumentano di 2.');
		
		$(be).addClass('help');
		
		$(be).appendTo('#hitthebricks');
	});
	
	$('#hitthebricks').mouseleave(function(){
		$('.help').remove()
	});
		
	
});

	function initGame(){
		
		$('.winner').remove();
		
		$('.levelcomplete').remove();
		
		$('.gameover').remove();
	
		timefinished=false;
	
		$('#livp').html(lvl);
		
		$('#progressbar').progressbar('option','value',(lvl/12)*100);	

		
		$('#boxcont').html('');
			
		$('#trs').html(tm-(lvl/2));	
		
		setTimeout(function(){	
		
			setCounter()
			
		},1500);
		
		tot=lvl*2+3;
	
		for (i=0;i<tot;i++){
	
		img=$('<img></img>');
	
		if (lvl>=1 && lvl<=3){
			
			addAttributes(img,'b1','images/brick1.gif')

		}
		else if (lvl>=4 && lvl<=6){
			
			addAttributes(img,'b2','images/brick2.gif')
		}
		else if (lvl>=7 && lvl<=9){
			
			addAttributes(img,'b3','images/brick3.gif')
		}
		else if (lvl>=10 && lvl<=12){
			
			addAttributes(img,'b4','images/brick4.gif')
		}
				
		
		$(img).appendTo('#boxcont');
	
		$(img).click(function(){
			
			tot--;
			
			$(this).addClass('dead');
	
			$(this).effect('explode',80);
			
			if (!timefinished){
			
				if (tot==0){
				
					lvl++;
				
					clearInterval(t);
				
					if (lvl>12){
					
						wn=$('<div>Hai completato tutti i livelli.</div>');
					
						$(wn).appendTo('body');
					
						$(wn).addClass('winner')
					}
					
					else{
						
						wn=$('<div>Livello completato.</div>');
					
						$(wn).appendTo('body');
					
						$(wn).addClass('levelcomplete')
						
						setLevelInterval();
					}
					
				}
			
			}
		});
	
		$(img).css({position:'absolute'});
	
		topY=numRnd(530,1);
		leftX=numRnd(530,1);
	
		$(img).animate({top:topY+'px',left:leftX+'px'},1500);

	}
	
	
}
function restartGame(){
			
	clearInterval(t);
			
	lvl=1;
			
	$('.gameover').remove();
	
	$('.winner').remove();
			
	$('img').fadeOut();		

	setLevelInterval();
			
}

function pauseGame(){
	
		clearInterval(t);
		
		$('#begin').attr('disabled',true);
		
		$('#resumegame').attr('disabled',false);
		
		$('img').fadeOut();
		
}

function resumeGame(){
	
	if (!timefinished){
		
		$(this).attr('disabled',true);
		
		d=$('<div>3</div>');
	
		$(d).addClass('afterlevel');
	
		$(d).appendTo('#boxcont');
	
		sli=setInterval(function(){
	
			csli=$(d).html()-1;
		
			$(d).html(csli);
		
			if (csli==0) {
			
				clearInterval(sli);
				
				allIMG=$('img');
				
				for (i=0;i<24;i++){
					
					if (!$(allIMG).eq(i).hasClass('dead')){
						
						$(allIMG).eq(i).fadeIn(0);
				
					}
				}
				setCounter();
				
				$('.afterlevel').remove()
			}
		
		},1000)
		
	}
}

function setCounter(){
	
	t=setInterval(function(){
		
	c=Math.round(($('#trs').html()-0.01)*100)/100;
		
	$('#trs').html(c);
		
	if (c==0){
			
		clearInterval(t);
		
				allIMG=$('img');
				
				for (i=0;i<24;i++){
					
					if (!$(allIMG).eq(i).hasClass('dead')){
						
						$(allIMG).eq(i).fadeTo('slow',0.4);
				
					}
				}
			
		ts=$('<div></div>');
			
		$(ts).appendTo('body');
			
		$(ts).html('Tempo esaurito.');
			
		$(ts).addClass('gameover');
			
		timefinished=true;
			
		}
		
	},10)
	
}

function addAttributes(element,id_E,src_E){
	
	$(element).attr({
		src:src_E,
		id:id_E
		
	})
			
}

function setLevelInterval(){
	
	$(this).attr('disabled',true);
	
	d=$('<div>3</div>');
	
	$(d).addClass('afterlevel');
	
	$(d).appendTo('#boxcont');
	
	sli=setInterval(function(){
	
		csli=$(d).html()-1;
		
		$(d).html(csli);
		
		if (csli==0) {
			
			clearInterval(sli);
			
			initGame()
		}
		
	},1000);
}

function numRnd(maxn,minn){
	
	return Math.round(Math.random()*(maxn-minn)+minn)
}